/** @type {Object} 消息提示 */
import Util from './test.js'
import { Message } from 'element-ui'
// 消息提示
const message = {
  getCallbackFunction: function(callback) {
    return Util.isFunction(callback) ? callback : false
  },
  /**
   * 正确消息提示
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-16
   * @param    {string}   msg      提示文字
   * @param    {Function} callback 回调函数
   */
  success: function(msg, callback) {
    callback = this.getCallbackFunction(callback)
    var _options = {
      type: 'success',
      message: msg
    }
    if (callback) {
      _options.onClose = callback
    }
    this._show(_options)
  },
  /**
   * 错误消息提示
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-16
   * @param    {string}   msg      提示文字
   * @param    {Function} callback 回调函数
   */
  error: function(msg, callback) {
    callback = this.getCallbackFunction(callback)
    var _options = {
      type: 'error',
      message: msg
    }
    if (callback) {
      _options.onClose = callback
    }
    this._show(_options)
  },
  /**
   * 警告消息提示
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-16
   * @param    {string}   msg      提示文字
   * @param    {Function} callback 回调函数
   */
  warning: function(msg, callback) {
    callback = this.getCallbackFunction(callback)
    var _options = {
      type: 'warning',
      message: msg
    }
    if (callback) {
      _options.onClose = callback
    }
    this._show(_options)
  },
  /**
   * 一般消息提示
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-16
   * @param    {string}   msg      提示文字
   * @param    {Function} callback 回调函数
   */
  info: function(msg, callback) {
    callback = this.getCallbackFunction(callback)
    var _options = {
      type: 'info',
      message: msg
    }
    if (callback) {
      _options.onClose = callback
    }
    this._show(_options)
  },
  /**
   * 提示辅助函数,供内部调用
   * @Author   Martinsun<syh@sunyonghong.com>
   * @DateTime 2020-02-16
   * @param    {[type]}                       _options [description]
   * @return   {[type]}                               [description]
   */
  _show: function(_options) {
    var config = Object.assign(
      {},
      {
        duration: 2000
      },
      _options
    )
    Message(config)
  }
}

export default message
